package com.zhny.view;

import com.zhny.protocol_v3_008.constant.DeviceType;
import com.zhny.util.XMLReaderUtil;
import com.zhny.vo.XMLSite;
import org.jb2011.lnf.beautyeye.ch3_button.BEButtonUI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import java.util.Map;
/**
 * 由于所有的界面逻辑都耦合在TelemerteringJPanel里感觉耦合度太高了，所以我想写一个TelemeteringBottomJPanel的工厂。
 * 本类作废，因为不知道为什么会导致一个稀奇古怪的bug：
 *
 1.在ItemListener中创建bottom的语句没有问题。
 2.ItemListener的首次触发JBoton更改正常
 3.点击时每次触发JBoton更改正常

 所以得知BUG定位到：ItemListener第二次触发时，新建的JP中botton为什么没有正常显示出来，仍然是之前的样式？

 * @Author 侯俊杰
 * @Date 2017/11/29
 * @Time 10:13
 **/


public class TelemeteringBottomJPanel extends JPanel
{

    private  static DefaultListModel mListData = new DefaultListModel();
    private  static int btcCount;//用来测试bt改变的次数！


    public TelemeteringBottomJPanel(LayoutManager layout)
    {
        super(layout);
    }

    /**
     *
     * @param mLogDetails 日志详情内容
     * @param selectSite 被选中的site
     * @return 定制的TelemeteringBottomJPanel
     */
    public static  TelemeteringBottomJPanel bottomJPanelFactory(TelemeteringJPanel context, List<Map<String,String>> mLogDetails, XMLSite selectSite)
    {
        TelemeteringBottomJPanel bottomJPanel = new TelemeteringBottomJPanel(null);
        bottomJPanel.setPreferredSize(new Dimension(800, 500));
        bottomJPanel.setBounds(0, 100, 800, 500);
        JLabel swtichLabel = new JLabel("遥测信息发送开关：");
//        swtichLabel.setIcon(imgIcon);
        swtichLabel.setBounds(100, 0, 200, 40);

        boolean mSwitchFlag = context.getCurrentSwitchFlag();
        //根据mSwitchFlag初始化button样式

        JButton mSwitch = new JButton("关"+btcCount);
        mSwitch.setText("关"+btcCount);
        System.out.println("mSwtich.setText(\"关\");"+btcCount);
        btcCount++;

        mSwitch.setBounds(615, 5, 80, 30);


//        if(mSwitchFlag)
//        {
//            System.out.println("mSwtich.setText(\"关\");"+btcCount);
//            mSwitch=new JButton("关"+btcCount);
////            mSwitch.setText("关"+btcCount);
//            btcCount++;
////            mSwitch.setUI(new BEButtonUI().setNormalColor(BEButtonUI.NormalColor.red));
//        }
//        else
//        {
//            System.out.println("mSwtich.setText(\"开\");"+btcCount);
//
//            mSwitch=new JButton("开"+btcCount);
////            mSwitch.setText("开"+btcCount);
////            mSwitch.setUI(new BEButtonUI().setNormalColor(BEButtonUI.NormalColor.green));
//            btcCount++;
//        }
            mSwitch.addActionListener(new AbstractAction()
            {
                public void actionPerformed(ActionEvent e)
                {
                    //获取当前应该开还是关
                    boolean mUpdatedSwitchFlag = context.getCurrentSwitchFlag();
                    if (mUpdatedSwitchFlag)
                    {
                        //清除设备
                        //直接通知外部关掉此设备！
                        context.closeCurrentSite();
                        context.setCurrentSwitchFlag(false);//回写标识

                        //改变样式：
                        System.out.println("ActionListener" + "mSwtich.setText(\"开\");");
                        mSwitch.setText("开"+btcCount);
                        mSwitch.setUI(new BEButtonUI().setNormalColor(BEButtonUI.NormalColor.green));
                    } else
                    {
                        //todo:点击开启摁钮时要做的事
                        //注册设备
                        context.registerCurrentSite();
                        context.setCurrentSwitchFlag(true);//回写标识

                        //改变样式:
                        System.out.println("ActionListener" + "mSwtich.setText(\"关\");");
                        mSwitch.setText("关"+btcCount);
                        mSwitch.setUI(new BEButtonUI().setNormalColor(BEButtonUI.NormalColor.red));
                    }
                }
            });


        JLabel logHistoryLabel = new JLabel("遥测信息发送日志：");
        logHistoryLabel.setBounds(100, 40, 200, 40);

        JList logHistoryJList = new JList();
        mListData.addElement("testFactory");

        logHistoryJList.setModel(mListData);
        logHistoryJList.setAutoscrolls(true);

        JScrollPane mLogScrollPane = new JScrollPane(logHistoryJList);//将Jlist填充至滚动框
        mLogScrollPane.setSize(new Dimension(600, 280));
        mLogScrollPane.setBounds(100, 100, 600, 280);

        logHistoryJList.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {

                if (e.getClickCount() == 2)
                {
                    System.out.println(TelemeteringBottomJPanel.class.getName()+"双击" + logHistoryJList.getSelectedValue());
                    //todo:这里要写该条日志的详情弹窗,只需填充第二个参数和第三个参数（分别为弹窗内容、弹窗标题）
                    JOptionPane.showMessageDialog(bottomJPanel, "双击" + logHistoryJList.getSelectedValue(), "日志详情", JOptionPane.INFORMATION_MESSAGE);
                }
            }
        });
        bottomJPanel.add(mSwitch);
        bottomJPanel.add(mLogScrollPane);
        bottomJPanel.add(logHistoryLabel);
        bottomJPanel.add(swtichLabel);
        return bottomJPanel;
    }


    /**
     * 初始化我的BJP，主要是设置大小
     */

}
